library(ggplot2)
library(dplyr)
library(car)
# Read the CSV file
data <- read.csv("/Users/vinay/Desktop/LinearRegression/project/CO2_Emissions.csv")
str(data)
'data.frame': 7385 obs. of 12 variables:
$ Make : chr "ACURA" "ACURA" "ACURA" "ACURA" ...
$ Model : chr "ILX" "ILX" "ILX HYBRID" "MDX 4WD" ...
$ Vehicle_Class : chr "COMPACT" "COMPACT" "COMPACT" "SUV - SMALL" ...
$ EngineSize_L : num 2 2.4 1.5 3.5 3.5 3.5 3.5 3.7 3.7 2.4 ...
$ Cylinders : int 4 4 4 6 6 6 6 6 6 4 ...
$ Transmission : chr "AS5" "M6" "AV7" "AS6" ...
$ Fuel_Type : chr "Z" "Z" "Z" "Z" ...
$ Fuel_Consumption_City_L_100km: num 9.9 11.2 6 12.7 12.1 11.9 11.8 12.8 13.4 10.6 ...
$ Fuel_Consumption_Hwy_L_100km : num 6.7 7.7 5.8 9.1 8.7 7.7 8.1 9 9.5 7.5 ...
$ Fuel_Consumption_Comb_L_100km: num 8.5 9.6 5.9 11.1 10.6 10 10.1 11.1 11.6 9.2 ...
$ Fuel_Consumption_Comb_mpg : int 33 29 48 25 27 28 28 25 24 31 ...
$ CO2_Emissions_g_per_km : int 196 221 136 255 244 230 232 255 267 212 ...
summary(data) # Summary statistics
Make Model Vehicle_Class EngineSize_L Cylinders Transmission Fuel_Type Fuel_Consumption_City_L_100km
Length:7385 Length:7385 Length:7385 Min. :0.90 Min. : 3.000 Length:7385 Length:7385 Min. : 4.20
Class :character Class :character Class :character 1st Qu.:2.00 1st Qu.: 4.000 Class :character Class :character 1st Qu.:10.10
Mode :character Mode :character Mode :character Median :3.00 Median : 6.000 Mode :character Mode :character Median :12.10
Mean :3.16 Mean : 5.615 Mean :12.56
3rd Qu.:3.70 3rd Qu.: 6.000 3rd Qu.:14.60
Max. :8.40 Max. :16.000 Max. :30.60
Fuel_Consumption_Hwy_L_100km Fuel_Consumption_Comb_L_100km Fuel_Consumption_Comb_mpg CO2_Emissions_g_per_km
Min. : 4.000 Min. : 4.10 Min. :11.00 Min. : 96.0
1st Qu.: 7.500 1st Qu.: 8.90 1st Qu.:22.00 1st Qu.:208.0
Median : 8.700 Median :10.60 Median :27.00 Median :246.0
Mean : 9.042 Mean :10.98 Mean :27.48 Mean :250.6
3rd Qu.:10.200 3rd Qu.:12.60 3rd Qu.:32.00 3rd Qu.:288.0
Max. :20.600 Max. :26.10 Max. :69.00 Max. :522.0
head(data)
sum(is.na(data))
[1] 0
data$Make <- as.factor(data$Make)
data$Model <- as.factor(data$Model)
data$Vehicle_Class <- as.factor(data$Vehicle_Class)
data$Transmission <- as.factor(data$Transmission)
data$Fuel_Type <- as.factor(data$Fuel_Type)
data <- data %>%
mutate(across(c(Make, Model, Vehicle_Class, Transmission, Fuel_Type), as.integer))
str(data)
'data.frame': 7385 obs. of 12 variables:
$ Make : int 1 1 1 1 1 1 1 1 1 1 ...
$ Model : int 1058 1058 1059 1252 1524 1542 1801 1802 1802 1836 ...
$ Vehicle_Class : int 1 1 1 12 12 3 3 3 3 1 ...
$ EngineSize_L : num 2 2.4 1.5 3.5 3.5 3.5 3.5 3.7 3.7 2.4 ...
$ Cylinders : int 4 4 4 6 6 6 6 6 6 4 ...
$ Transmission : int 15 26 23 16 16 16 16 16 26 15 ...
$ Fuel_Type : int 5 5 5 5 5 5 5 5 5 5 ...
$ Fuel_Consumption_City_L_100km: num 9.9 11.2 6 12.7 12.1 11.9 11.8 12.8 13.4 10.6 ...
$ Fuel_Consumption_Hwy_L_100km : num 6.7 7.7 5.8 9.1 8.7 7.7 8.1 9 9.5 7.5 ...
$ Fuel_Consumption_Comb_L_100km: num 8.5 9.6 5.9 11.1 10.6 10 10.1 11.1 11.6 9.2 ...
$ Fuel_Consumption_Comb_mpg : int 33 29 48 25 27 28 28 25 24 31 ...
$ CO2_Emissions_g_per_km : int 196 221 136 255 244 230 232 255 267 212 ...
model <- lm(Fuel_Consumption_Comb_L_100km ~ EngineSize_L, data = data)
summary(model)
Call:
lm(formula = Fuel_Consumption_Comb_L_100km ~ EngineSize_L, data = data)
Residuals:
Min 1Q Median 3Q Max
-5.0805 -0.9231 -0.1505 0.7986 10.1686
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.46000 0.04927 110.8 <2e-16 ***
EngineSize_L 1.74524 0.01433 121.8 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.668 on 7383 degrees of freedom
Multiple R-squared: 0.6676, Adjusted R-squared: 0.6675
F-statistic: 1.483e+04 on 1 and 7383 DF, p-value: < 2.2e-16
# Plot the data and the regression line
ggplot(data, aes(x = EngineSize_L, y = Fuel_Consumption_Comb_L_100km)) +
geom_point() +
geom_smooth(method = "lm", col = "blue") +
labs(x = "Engine Size (L)", y = "Fuel Consumption (L/100 km)",
title = "Relationship between Engine Size and Fuel Consumption")

par(mfrow=c(2,2))
plot(model)

plot(data$EngineSize_L, data$Fuel_Consumption_Comb_L_100km,
xlab = "Engine Size (L)", ylab = "Fuel Consumption (L/100 km)",
main = "Relationship between Engine Size and Fuel Consumption")

cylinders_model <- lm(CO2_Emissions_g_per_km ~ Cylinders, data = data)
summary(cylinders_model)
Call:
lm(formula = CO2_Emissions_g_per_km ~ Cylinders, data = data)
Residuals:
Min 1Q Median 3Q Max
-111.548 -20.139 -1.139 18.861 150.861
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 100.9569 1.2181 82.88 <2e-16 ***
Cylinders 26.6477 0.2063 129.19 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 32.41 on 7383 degrees of freedom
Multiple R-squared: 0.6933, Adjusted R-squared: 0.6933
F-statistic: 1.669e+04 on 1 and 7383 DF, p-value: < 2.2e-16
ggplot(data, aes(x = Cylinders, y = CO2_Emissions_g_per_km)) +
geom_point() +
geom_smooth(method = "lm", col = "blue") +
labs(x = "Number of Cylinders", y = "CO2 Emissions (g/km)",
title = "Relationship between Number of Cylinders and CO2 Emissions")

# Create dummy variables for 'Vehicle_Class' using model.matrix
# This creates a full set of dummy variables (one for each class)
# Fit the linear model with the dummy variables for vehicle class as predictors
# This assumes that 'Fuel_Consumption_Comb_L_100_km' is the correct name of your dependent variable
vehicle_class_dummies <- model.matrix(~ Vehicle_Class - 1, data = data)
model_data <- data.frame(Fuel_Consumption_Comb_L_100km = data$Fuel_Consumption_Comb_L_100km, vehicle_class_dummies)
# Fit the linear model
model_vehicle_class <- lm(Fuel_Consumption_Comb_L_100km ~ ., data = model_data)
# View the summary of the model
summary(model_vehicle_class)
Call:
lm(formula = Fuel_Consumption_Comb_L_100km ~ ., data = model_data)
Residuals:
Min 1Q Median 3Q Max
-7.5336 -1.4439 -0.2502 1.1561 10.3906
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.1924 0.2796 68.650 <2e-16 ***
Vehicle_ClassCOMPACT -9.8485 0.2885 -34.142 <2e-16 ***
Vehicle_ClassFULL.SIZE -7.5588 0.2937 -25.741 <2e-16 ***
Vehicle_ClassMID.SIZE -9.5831 0.2876 -33.321 <2e-16 ***
Vehicle_ClassMINICOMPACT -9.0237 0.3066 -29.435 <2e-16 ***
Vehicle_ClassMINIVAN -7.2574 0.3777 -19.216 <2e-16 ***
Vehicle_ClassPICKUP.TRUCK...SMALL -7.4748 0.3326 -22.476 <2e-16 ***
Vehicle_ClassPICKUP.TRUCK...STANDARD -5.3116 0.2962 -17.931 <2e-16 ***
Vehicle_ClassSPECIAL.PURPOSE.VEHICLE -8.4288 0.3810 -22.123 <2e-16 ***
Vehicle_ClassSTATION.WAGON...MID.SIZE -8.9603 0.4189 -21.389 <2e-16 ***
Vehicle_ClassSTATION.WAGON...SMALL -10.6496 0.3141 -33.910 <2e-16 ***
Vehicle_ClassSUBCOMPACT -8.6180 0.2944 -29.273 <2e-16 ***
Vehicle_ClassSUV...SMALL -8.9606 0.2870 -31.216 <2e-16 ***
Vehicle_ClassSUV...STANDARD -5.5422 0.2919 -18.990 <2e-16 ***
Vehicle_ClassTWO.SEATER -7.2711 0.2990 -24.322 <2e-16 ***
Vehicle_ClassVAN...CARGO -0.4742 0.5591 -0.848 0.396
Vehicle_ClassVAN...PASSENGER NA NA NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.271 on 7369 degrees of freedom
Multiple R-squared: 0.3847, Adjusted R-squared: 0.3834
F-statistic: 307.1 on 15 and 7369 DF, p-value: < 2.2e-16
plot(model_vehicle_class)




# Create dummy variables for categorical variables
vehicle_class_dummies <- model.matrix(~ Vehicle_Class, data = data)[, -1]
fuel_type_dummies <- model.matrix(~ Fuel_Type, data = data)[, -1]
transmission_dummies <- model.matrix(~ Transmission, data = data)[, -1]
# Combine the dummy variables with the original data frame
data <- cbind(data, vehicle_class_dummies, fuel_type_dummies, transmission_dummies)
# Fit the multiple linear regression model
# Adjust this formula based on your specific variable names and predictors
model <- lm(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + ., data = data)
# View the summary of the model
summary(model)
Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders +
., data = data)
Residuals:
Min 1Q Median 3Q Max
-38.456 -1.407 0.000 1.368 21.479
Coefficients: (93 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.055e+02 4.085e+00 50.314 < 2e-16 ***
EngineSize_L 2.065e+00 2.809e-01 7.350 2.28e-13 ***
Cylinders 5.242e-01 1.865e-01 2.810 0.004971 **
MakeALFA ROMEO 1.272e+01 4.870e+00 2.612 0.009020 **
MakeASTON MARTIN 8.553e+00 3.168e+00 2.700 0.006958 **
MakeAUDI 1.507e+00 3.477e+00 0.434 0.664653
MakeBENTLEY 3.761e+01 4.479e+00 8.399 < 2e-16 ***
MakeBMW 2.631e+00 3.159e+00 0.833 0.405067
MakeBUGATTI 6.405e+01 4.590e+00 13.955 < 2e-16 ***
MakeBUICK 2.916e+00 2.584e+00 1.128 0.259160
MakeCADILLAC 4.324e+00 3.038e+00 1.423 0.154676
MakeCHEVROLET 4.797e+00 3.834e+00 1.251 0.210937
MakeCHRYSLER 7.940e+00 4.377e+00 1.814 0.069738 .
MakeDODGE 8.097e+00 4.375e+00 1.851 0.064266 .
MakeFIAT 1.084e+01 2.968e+00 3.653 0.000261 ***
MakeFORD 1.646e+00 4.331e+00 0.380 0.703905
MakeGENESIS 5.394e+00 2.953e+00 1.827 0.067815 .
MakeGMC 4.442e+00 4.417e+00 1.006 0.314646
MakeHONDA 7.718e+00 3.162e+00 2.441 0.014675 *
MakeHYUNDAI 1.382e+01 3.601e+00 3.838 0.000125 ***
MakeINFINITI 1.322e+01 4.432e+00 2.983 0.002871 **
MakeJAGUAR 3.568e+00 4.350e+00 0.820 0.412148
MakeJEEP 1.130e+01 4.156e+00 2.718 0.006587 **
MakeKIA 5.337e+00 4.861e+00 1.098 0.272258
MakeLAMBORGHINI 2.667e+01 4.428e+00 6.022 1.83e-09 ***
MakeLAND ROVER 9.920e+00 4.870e+00 2.037 0.041690 *
MakeLEXUS 2.475e+01 3.581e+00 6.910 5.43e-12 ***
MakeLINCOLN 1.348e+01 4.679e+00 2.880 0.003994 **
MakeMASERATI 5.557e+00 3.132e+00 1.774 0.076084 .
MakeMAZDA 6.397e+00 2.830e+00 2.260 0.023831 *
MakeMERCEDES-BENZ 1.669e+01 4.388e+00 3.804 0.000144 ***
MakeMINI 4.148e+00 2.947e+00 1.407 0.159416
MakeMITSUBISHI 1.293e+00 3.419e+00 0.378 0.705254
MakeNISSAN 1.274e+01 3.719e+00 3.424 0.000621 ***
MakePORSCHE -4.216e-01 4.600e+00 -0.092 0.926966
MakeRAM 8.831e+00 3.032e+00 2.912 0.003602 **
MakeROLLS-ROYCE 1.695e+01 3.070e+00 5.523 3.49e-08 ***
MakeSCION 7.433e+00 3.627e+00 2.049 0.040509 *
MakeSMART 1.232e+01 3.716e+00 3.316 0.000918 ***
MakeSRT 1.668e+01 4.382e+00 3.807 0.000142 ***
MakeSUBARU 7.855e+00 3.849e+00 2.041 0.041287 *
MakeTOYOTA 1.524e+01 2.837e+00 5.374 8.02e-08 ***
MakeVOLKSWAGEN 6.334e+00 4.702e+00 1.347 0.178025
MakeVOLVO -1.951e+00 4.447e+00 -0.439 0.660801
Model124 SPIDER -1.936e-13 2.577e+00 0.000 1.000000
Model1500 5.666e+00 2.414e+00 2.347 0.018946 *
Model1500 (MDS) 3.776e+00 2.482e+00 1.521 0.128241
Model1500 4X4 7.662e+00 2.421e+00 3.165 0.001560 **
Model1500 4X4 (MDS) 5.649e+00 2.490e+00 2.269 0.023306 *
Model1500 4X4 DIESEL 6.481e+00 4.201e+00 1.543 0.122961
Model1500 4X4 EcoDiesel -1.208e+00 4.196e+00 -0.288 0.773433
Model1500 4X4 ECODIESEL 4.707e+00 2.774e+00 1.696 0.089851 .
Model1500 4X4 eTorque -8.818e-01 2.705e+00 -0.326 0.744456
Model1500 4X4 FFV 3.014e+00 2.300e+00 1.310 0.190109
Model1500 Classic 5.927e+00 2.691e+00 2.202 0.027687 *
Model1500 Classic 4X4 8.443e+00 2.699e+00 3.129 0.001766 **
Model1500 Classic 4X4 EcoDiesel 4.433e+00 4.204e+00 1.054 0.291747
Model1500 Classic 4X4 FFV 6.463e+00 3.257e+00 1.985 0.047234 *
Model1500 Classic EcoDiesel 1.603e+00 4.201e+00 0.382 0.702758
Model1500 Classic FFV 6.260e+00 3.250e+00 1.926 0.054166 .
Model1500 DIESEL 4.428e+00 4.199e+00 1.055 0.291593
Model1500 EcoDiesel -3.135e+00 4.193e+00 -0.748 0.454645
Model1500 ECODIESEL 1.996e+00 2.771e+00 0.720 0.471351
Model1500 ECODIESEL HFE 1.867e+00 3.311e+00 0.564 0.572775
Model1500 eTorque -1.787e+00 2.698e+00 -0.662 0.507823
Model1500 FFV 2.813e+00 2.291e+00 1.228 0.219555
Model1500 HFE -3.769e+00 2.883e+00 -1.307 0.191201
Model1500 HFE eTorque -1.720e+00 3.248e+00 -0.530 0.596401
Model200 -2.680e+00 4.553e+00 -0.589 0.556124
Model200 AWD -6.026e+00 5.226e+00 -1.153 0.248987
Model200 AWD FFV 1.821e+00 4.034e+00 0.451 0.651723
Model200 CONVERTIBLE -4.238e+00 4.541e+00 -0.933 0.350741
Model200 CONVERTIBLE FFV -2.693e+00 4.517e+00 -0.596 0.551137
Model200 FFV 6.163e+00 3.901e+00 1.580 0.114238
Model200 SEDAN -2.507e+00 4.618e+00 -0.543 0.587329
Model200 SEDAN FFV -1.243e+00 4.598e+00 -0.270 0.786992
Model228i 1.650e+00 3.484e+00 0.474 0.635740
Model228i CABRIOLET -1.751e+00 4.333e+00 -0.404 0.686119
Model228i COUPE -2.408e+00 3.485e+00 -0.691 0.489712
Model228i xDRIVE 1.830e+00 4.335e+00 0.422 0.672970
Model228i xDRIVE CABRIOLET -3.336e-01 3.483e+00 -0.096 0.923696
Model228i xDRIVE COUPE -3.861e+00 4.336e+00 -0.891 0.373206
Model230i Cabriolet -1.747e-02 4.333e+00 -0.004 0.996783
Model230i CABRIOLET 2.710e+00 4.332e+00 0.626 0.531606
Model230i Coupe 1.495e+00 4.335e+00 0.345 0.730182
Model230i COUPE 1.293e+00 2.966e+00 0.436 0.662881
Model230i xDrive Cabriolet 4.816e-01 3.480e+00 0.138 0.889919
Model230i xDRIVE CABRIOLET 1.204e+00 3.480e+00 0.346 0.729345
Model230i xDrive Coupe 9.522e-01 3.481e+00 0.274 0.784438
Model230i xDRIVE COUPE 8.475e-01 3.481e+00 0.243 0.807666
Model300 -6.895e+00 4.089e+00 -1.686 0.091853 .
Model300 (MDS) -7.277e+00 4.331e+00 -1.680 0.092953 .
Model300 AWD -4.037e+00 4.158e+00 -0.971 0.331566
Model300 AWD (MDS) -7.332e+00 5.380e+00 -1.363 0.173009
Model300 AWD FFV -1.327e+00 4.064e+00 -0.327 0.744048
Model300 FFV -3.647e+00 4.096e+00 -0.890 0.373292
Model300 SRT (MDS) -1.133e+01 5.403e+00 -2.098 0.035979 *
Model320i 2.262e+00 2.644e+00 0.856 0.392236
Model320i SEDAN -1.712e+00 3.377e+00 -0.507 0.612275
Model320i xDRIVE 1.510e+00 3.031e+00 0.498 0.618422
Model320i xDRIVE SEDAN -3.165e+00 4.251e+00 -0.745 0.456491
Model328d xDRIVE 6.280e+00 2.940e+00 2.136 0.032723 *
Model328d xDRIVE SEDAN 8.042e+00 4.318e+00 1.862 0.062602 .
Model328d xDRIVE TOURING 5.664e+00 3.180e+00 1.781 0.074937 .
Model328i -5.368e-01 3.384e+00 -0.159 0.873973
Model328i SEDAN -1.712e+00 3.377e+00 -0.507 0.612275
Model328i xDRIVE 1.664e+00 3.376e+00 0.493 0.622022
Model328i xDRIVE GRAN TURISMO -3.040e+00 3.287e+00 -0.925 0.355152
Model328i xDRIVE SEDAN -2.492e+00 4.245e+00 -0.587 0.557155
Model328i xDRIVE TOURING -6.900e-01 3.352e+00 -0.206 0.836911
Model330i xDrive 2.172e+00 4.252e+00 0.511 0.609459
Model330i xDRIVE 1.900e+00 3.373e+00 0.563 0.573271
Model330i xDrive Gran Turismo -1.337e+00 4.435e+00 -0.301 0.763061
Model330i xDRIVE GRAN TURISMO -1.418e+00 3.606e+00 -0.393 0.694129
Model330i xDrive Sedan 3.172e+00 4.252e+00 0.746 0.455662
Model330i xDrive Touring 1.013e+00 4.483e+00 0.226 0.821337
Model330i xDRIVE TOURING 9.313e-01 3.666e+00 0.254 0.799505
Model335i -5.230e+00 3.367e+00 -1.553 0.120474
Model335i SEDAN -6.255e+00 3.365e+00 -1.859 0.063078 .
Model335i xDRIVE -3.838e+00 3.363e+00 -1.141 0.253785
Model335i xDRIVE GRAN TURISMO -6.949e+00 3.279e+00 -2.119 0.034132 *
Model335i xDRIVE SEDAN -6.708e+00 3.360e+00 -1.997 0.045929 *
Model340i -2.121e+00 2.627e+00 -0.807 0.419642
Model340i xDRIVE -1.671e+00 2.620e+00 -0.638 0.523652
Model340i xDRIVE GRAN TURISMO -4.619e+00 3.601e+00 -1.283 0.199626
Model370Z -8.171e+00 3.081e+00 -2.652 0.008029 **
Model370Z COUPE -1.288e+01 3.877e+00 -3.321 0.000902 ***
Model370Z Roadster -3.948e+00 3.416e+00 -1.156 0.247760
Model370Z ROADSTER -7.671e+00 3.112e+00 -2.465 0.013718 *
Model428i CABRIOLET 1.017e+00 3.487e+00 0.292 0.770615
Model428i COUPE 3.253e-02 2.642e+00 0.012 0.990179
Model428i GRAN COUPE -3.094e-01 2.842e+00 -0.109 0.913327
Model428i xDRIVE CABRIOLET -1.331e+00 3.480e+00 -0.382 0.702253
Model428i xDRIVE COUPE 2.787e-01 3.028e+00 0.092 0.926667
Model428i xDRIVE GRAN COUPE 3.621e-01 3.376e+00 0.107 0.914591
Model430i Coupe 6.783e-01 4.247e+00 0.160 0.873127
Model430i xDrive Cabriolet 4.237e-01 3.480e+00 0.122 0.903118
Model430i xDRIVE CABRIOLET -3.284e-01 3.481e+00 -0.094 0.924857
Model430i xDrive Coupe 1.177e+00 3.373e+00 0.349 0.727023
Model430i xDRIVE COUPE 1.900e+00 3.373e+00 0.563 0.573271
Model430i xDrive Gran Coupe 1.177e+00 3.373e+00 0.349 0.727023
Model430i xDRIVE GRAN COUPE 1.900e+00 3.373e+00 0.563 0.573271
Model435i CABRIOLET -2.651e+00 3.479e+00 -0.762 0.446094
Model435i COUPE -3.598e+00 2.622e+00 -1.372 0.170067
Model435i GRAN COUPE -6.912e+00 4.244e+00 -1.629 0.103411
Model435i xDRIVE CABRIOLET -4.369e+00 3.472e+00 -1.258 0.208374
Model435i xDRIVE COUPE -3.495e+00 2.618e+00 -1.335 0.181960
Model435i xDRIVE GRAN COUPE -3.722e+00 3.367e+00 -1.105 0.269035
Model440i Coupe 1.330e+00 3.014e+00 0.441 0.659029
Model440i COUPE -2.261e+00 2.831e+00 -0.799 0.424356
Model440i xDrive Cabriolet -2.782e+00 3.471e+00 -0.801 0.423002
Model440i xDRIVE CABRIOLET -1.996e+00 3.474e+00 -0.575 0.565603
Model440i xDrive Coupe -5.957e-01 2.819e+00 -0.211 0.832686
Model440i xDRIVE COUPE -8.563e-01 2.822e+00 -0.303 0.761595
Model440i xDrive Gran Coupe -2.193e+00 3.366e+00 -0.651 0.514840
Model440i xDRIVE GRAN COUPE -1.231e+00 3.370e+00 -0.365 0.714792
Model4C -7.834e+00 4.697e+00 -1.668 0.095414 .
Model4C Coupe -5.834e+00 5.659e+00 -1.031 0.302605
Model4C COUPE -5.834e+00 5.659e+00 -1.031 0.302605
Model4C Spider -5.834e+00 5.038e+00 -1.158 0.246929
Model4C SPIDER -5.834e+00 5.038e+00 -1.158 0.246929
Model4RUNNER (Part-Time 4WD) -1.282e+01 5.454e+00 -2.352 0.018726 *
Model4Runner 4WD -8.166e+00 4.824e+00 -1.693 0.090542 .
Model4RUNNER 4WD -1.124e+01 4.378e+00 -2.568 0.010257 *
Model4Runner 4WD (Part-Time 4WD) -8.166e+00 4.824e+00 -1.693 0.090542 .
Model4RUNNER 4WD (Part-Time 4WD) -1.085e+01 4.455e+00 -2.435 0.014930 *
Model500 5.258e-01 3.675e+00 0.143 0.886244
Model500 ABARTH -3.969e-01 4.102e+00 -0.097 0.922920
Model500 ABARTH CABRIO -8.080e-02 3.477e+00 -0.023 0.981463
Model500 ABARTH HATCHBACK -8.080e-02 3.477e+00 -0.023 0.981463
Model500 CABRIO 2.593e+00 3.442e+00 0.753 0.451380
Model500 CABRIO TURBO -1.675e+00 4.855e+00 -0.345 0.730041
Model500 HATCHBACK 4.415e+00 3.444e+00 1.282 0.199822
Model500 HATCHBACK TURBO -4.926e-01 3.585e+00 -0.137 0.890728
Model500L -3.841e+00 2.593e+00 -1.481 0.138593
Model500L TURBO -6.796e+00 3.478e+00 -1.954 0.050769 .
Model500X -2.770e+00 3.232e+00 -0.857 0.391463
Model500X AWD -3.038e+00 3.359e+00 -0.904 0.365794
Model528i 1.812e+00 4.349e+00 0.417 0.677014
Model528i SEDAN 3.946e-01 4.337e+00 0.091 0.927505
Model528i xDRIVE 3.114e+00 3.488e+00 0.893 0.372016
Model528i xDRIVE SEDAN -1.042e+00 4.333e+00 -0.241 0.809924
Model530i xDrive 3.431e+00 4.337e+00 0.791 0.428832
Model530i xDRIVE 3.350e+00 3.485e+00 0.961 0.336431
Model530i xDrive Sedan 2.779e+00 4.336e+00 0.641 0.521542
Model535d xDRIVE 3.573e+00 3.561e+00 1.003 0.315761
Model535d xDRIVE SEDAN 2.965e+00 4.392e+00 0.675 0.499635
Model535i xDRIVE -7.027e-01 3.479e+00 -0.202 0.839931
Model535i xDRIVE GRAN TURISMO -5.330e+00 3.270e+00 -1.630 0.103205
Model535i xDRIVE SEDAN -5.039e+00 4.326e+00 -1.165 0.244107
Model540i xDrive 1.995e+00 4.331e+00 0.461 0.645030
Model540i xDRIVE 4.504e-02 3.479e+00 0.013 0.989671
Model540i xDrive Sedan -2.685e-02 4.336e+00 -0.006 0.995060
Model550i xDRIVE 1.453e+00 3.477e+00 0.418 0.675953
Model550i xDRIVE GRAN TURISMO -4.215e+00 3.276e+00 -1.287 0.198267
Model550i xDRIVE SEDAN -1.945e+00 4.327e+00 -0.450 0.653016
Model640i xDRIVE CABRIOLET -1.760e+00 2.955e+00 -0.596 0.551429
Model640i xDrive Gran Coupe 1.505e+00 4.237e+00 0.355 0.722531
Model640i xDRIVE GRAN COUPE -1.541e+00 2.706e+00 -0.570 0.568915
Model640i xDrive Gran Turismo -5.964e+00 4.425e+00 -1.348 0.177765
[ reached getOption("max.print") -- omitted 1990 rows ]
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.644 on 5288 degrees of freedom
Multiple R-squared: 0.9972, Adjusted R-squared: 0.9961
F-statistic: 905.8 on 2096 and 5288 DF, p-value: < 2.2e-16
model <- lm(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_City_L_100km + Fuel_Consumption_Hwy_L_100km + Fuel_Consumption_Comb_L_100km, data = data)
summary(model)
Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders +
Fuel_Consumption_City_L_100km + Fuel_Consumption_Hwy_L_100km +
Fuel_Consumption_Comb_L_100km, data = data)
Residuals:
Min 1Q Median 3Q Max
-119.233 -6.584 1.905 10.559 72.796
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 50.8179 1.1797 43.078 <2e-16 ***
EngineSize_L 5.5090 0.5105 10.790 <2e-16 ***
Cylinders 6.5421 0.3563 18.360 <2e-16 ***
Fuel_Consumption_City_L_100km 1.2212 3.0696 0.398 0.6908
Fuel_Consumption_Hwy_L_100km 1.4350 2.5320 0.567 0.5709
Fuel_Consumption_Comb_L_100km 10.6892 5.5664 1.920 0.0549 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 20.34 on 7379 degrees of freedom
Multiple R-squared: 0.8792, Adjusted R-squared: 0.8791
F-statistic: 1.074e+04 on 5 and 7379 DF, p-value: < 2.2e-16
vif_model <- vif(model)
vif_model
EngineSize_L Cylinders Fuel_Consumption_City_L_100km Fuel_Consumption_Hwy_L_100km Fuel_Consumption_Comb_L_100km
8.528664 7.572818 2059.866977 566.043118 4625.521279
data_subset <- data[, c("EngineSize_L", "Cylinders", "Fuel_Consumption_City_L_100km",
"Fuel_Consumption_Hwy_L_100km", "Fuel_Consumption_Comb_L_100km")]
cor.mat <- round(cor(data_subset), 2)
cor.mat
EngineSize_L Cylinders Fuel_Consumption_City_L_100km Fuel_Consumption_Hwy_L_100km Fuel_Consumption_Comb_L_100km
EngineSize_L 1.00 0.93 0.83 0.76 0.82
Cylinders 0.93 1.00 0.80 0.72 0.78
Fuel_Consumption_City_L_100km 0.83 0.80 1.00 0.95 0.99
Fuel_Consumption_Hwy_L_100km 0.76 0.72 0.95 1.00 0.98
Fuel_Consumption_Comb_L_100km 0.82 0.78 0.99 0.98 1.00
# Plot diagnostics
plot(model)




revised_model <- lm(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)
# View the summary of the revised model
summary(revised_model)
Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders +
Fuel_Consumption_Comb_L_100km, data = data)
Residuals:
Min 1Q Median 3Q Max
-119.333 -6.584 1.820 10.574 72.943
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 51.1704 1.0990 46.56 <2e-16 ***
EngineSize_L 5.4971 0.5103 10.77 <2e-16 ***
Cylinders 6.4857 0.3486 18.60 <2e-16 ***
Fuel_Consumption_Comb_L_100km 13.2688 0.1427 92.96 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 20.34 on 7381 degrees of freedom
Multiple R-squared: 0.8792, Adjusted R-squared: 0.8791
F-statistic: 1.791e+04 on 3 and 7381 DF, p-value: < 2.2e-16
# Check VIF for the revised model
vif_revised_model <- vif(revised_model)
vif_revised_model
EngineSize_L Cylinders Fuel_Consumption_Comb_L_100km
8.523051 7.250291 3.041778
# Plot diagnostics
plot(revised_model)




# Apply a log transformation to the CO2 emissions
data$log_CO2_Emissions_g_per_km <- log(data$CO2_Emissions_g_per_km)
# Fit the model with the log-transformed CO2 emissions
log_model <- lm(log_CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)
# View the summary of the model
summary(log_model)
Call:
lm(formula = log_CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders +
Fuel_Consumption_Comb_L_100km, data = data)
Residuals:
Min 1Q Median 3Q Max
-0.64747 -0.02282 0.02156 0.05278 0.26397
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.7058910 0.0050325 935.096 <2e-16 ***
EngineSize_L 0.0222388 0.0023369 9.516 <2e-16 ***
Cylinders 0.0179695 0.0015964 11.256 <2e-16 ***
Fuel_Consumption_Comb_L_100km 0.0564375 0.0006536 86.350 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.09314 on 7381 degrees of freedom
Multiple R-squared: 0.8439, Adjusted R-squared: 0.8438
F-statistic: 1.33e+04 on 3 and 7381 DF, p-value: < 2.2e-16
plot(log_model)




# Fit a model with a second-degree polynomial for Engine Size
poly_model <- lm(CO2_Emissions_g_per_km ~ poly(EngineSize_L, 2) + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)
# Fit a model with interaction terms
interact_model <- lm(CO2_Emissions_g_per_km ~ EngineSize_L * Cylinders + Fuel_Consumption_Comb_L_100km, data = data)
# View the summary of the polynomial model
summary(poly_model)
Call:
lm(formula = CO2_Emissions_g_per_km ~ poly(EngineSize_L, 2) +
Cylinders + Fuel_Consumption_Comb_L_100km, data = data)
Residuals:
Min 1Q Median 3Q Max
-118.675 -6.733 1.877 10.484 72.440
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 69.6475 2.3996 29.024 < 2e-16 ***
poly(EngineSize_L, 2)1 660.9220 59.5441 11.100 < 2e-16 ***
poly(EngineSize_L, 2)2 -84.8337 20.5704 -4.124 3.76e-05 ***
Cylinders 6.4668 0.3483 18.568 < 2e-16 ***
Fuel_Consumption_Comb_L_100km 13.1777 0.1443 91.335 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 20.32 on 7380 degrees of freedom
Multiple R-squared: 0.8795, Adjusted R-squared: 0.8794
F-statistic: 1.346e+04 on 4 and 7380 DF, p-value: < 2.2e-16
# View the summary of the interaction model
summary(interact_model)
Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L * Cylinders +
Fuel_Consumption_Comb_L_100km, data = data)
Residuals:
Min 1Q Median 3Q Max
-118.849 -6.715 1.890 10.486 73.146
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 45.96580 2.17492 21.134 < 2e-16 ***
EngineSize_L 6.83821 0.70296 9.728 < 2e-16 ***
Cylinders 7.62848 0.53973 14.134 < 2e-16 ***
Fuel_Consumption_Comb_L_100km 13.22198 0.14366 92.036 < 2e-16 ***
EngineSize_L:Cylinders -0.24634 0.08884 -2.773 0.00557 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 20.33 on 7380 degrees of freedom
Multiple R-squared: 0.8793, Adjusted R-squared: 0.8793
F-statistic: 1.344e+04 on 4 and 7380 DF, p-value: < 2.2e-16
plot(poly_model)




plot(interact_model)




library(MASS)
Attaching package: ‘MASS’
The following object is masked from ‘package:dplyr’:
select
# Find the optimal Box-Cox transformation for the response variable
bc <- boxcox(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)

# Identify the lambda that maximizes the log-likelihood
lambda <- bc$x[which.max(bc$y)]
# Apply the Box-Cox transformation with the identified lambda
data$BC_CO2_Emissions <- (data$CO2_Emissions_g_per_km^lambda - 1) / lambda
# Fit the model with the Box-Cox transformed response variable
bc_model <- lm(BC_CO2_Emissions ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)
# View the summary of the model
summary(bc_model)
Call:
lm(formula = BC_CO2_Emissions ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km,
data = data)
Residuals:
Min 1Q Median 3Q Max
-74.091 -3.996 1.297 6.665 43.746
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 45.03431 0.66614 67.61 <2e-16 ***
EngineSize_L 3.34839 0.30933 10.82 <2e-16 ***
Cylinders 3.80714 0.21131 18.02 <2e-16 ***
Fuel_Consumption_Comb_L_100km 8.05106 0.08651 93.06 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 12.33 on 7381 degrees of freedom
Multiple R-squared: 0.8782, Adjusted R-squared: 0.8781
F-statistic: 1.774e+04 on 3 and 7381 DF, p-value: < 2.2e-16
plot(bc_model)




# Initial full model including all predictors
full_model <- lm(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km, data = data)
# Stepwise regression using both directions (forward and backward)
stepwise_model <- step(full_model, direction="both")
Start: AIC=44500.89
CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km
Df Sum of Sq RSS AIC
<none> 3054027 44501
- EngineSize_L 1 48008 3102036 44614
- Cylinders 1 143201 3197228 44837
- Fuel_Consumption_Comb_L_100km 1 3575803 6629830 50223
# View the summary of the stepwise model
summary(stepwise_model)
Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders +
Fuel_Consumption_Comb_L_100km, data = data)
Residuals:
Min 1Q Median 3Q Max
-119.333 -6.584 1.820 10.574 72.943
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 51.1704 1.0990 46.56 <2e-16 ***
EngineSize_L 5.4971 0.5103 10.77 <2e-16 ***
Cylinders 6.4857 0.3486 18.60 <2e-16 ***
Fuel_Consumption_Comb_L_100km 13.2688 0.1427 92.96 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 20.34 on 7381 degrees of freedom
Multiple R-squared: 0.8792, Adjusted R-squared: 0.8791
F-statistic: 1.791e+04 on 3 and 7381 DF, p-value: < 2.2e-16
data <- read.csv("/Users/vinay/Desktop/LinearRegression/project/CO2_Emissions.csv")
data$Vehicle_Class <- as.factor(data$Vehicle_Class)
data$Transmission <- as.factor(data$Transmission)
data$Fuel_Type <- as.factor(data$Fuel_Type)
full_model_cat <- lm(CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders +
Fuel_Consumption_Comb_L_100km + Vehicle_Class +
Transmission + Fuel_Type, data = data)
stepwise_model_cat <- step(full_model_cat, direction="both")
Start: AIC=24110.22
CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders + Fuel_Consumption_Comb_L_100km +
Vehicle_Class + Transmission + Fuel_Type
Df Sum of Sq RSS AIC
<none> 190745 24110
- EngineSize_L 1 52 190797 24110
- Cylinders 1 806 191550 24139
- Transmission 26 6111 196855 24291
- Vehicle_Class 15 12389 203134 24545
- Fuel_Type 4 2273662 2464407 42999
- Fuel_Consumption_Comb_L_100km 1 3523555 3714299 46034
summary(stepwise_model_cat)
Call:
lm(formula = CO2_Emissions_g_per_km ~ EngineSize_L + Cylinders +
Fuel_Consumption_Comb_L_100km + Vehicle_Class + Transmission +
Fuel_Type, data = data)
Residuals:
Min 1Q Median 3Q Max
-54.422 -2.345 0.001 1.924 44.217
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 37.91087 1.03998 36.454 < 2e-16 ***
EngineSize_L 0.20242 0.14332 1.412 0.157897
Cylinders 0.56774 0.10200 5.566 2.70e-08 ***
Fuel_Consumption_Comb_L_100km 22.35300 0.06072 368.124 < 2e-16 ***
Vehicle_ClassFULL-SIZE 1.29955 0.27725 4.687 2.82e-06 ***
Vehicle_ClassMID-SIZE 0.10760 0.22639 0.475 0.634601
Vehicle_ClassMINICOMPACT -0.54284 0.37441 -1.450 0.147142
Vehicle_ClassMINIVAN 1.23406 0.61368 2.011 0.044370 *
Vehicle_ClassPICKUP TRUCK - SMALL 3.86730 0.48333 8.001 1.42e-15 ***
Vehicle_ClassPICKUP TRUCK - STANDARD 1.30125 0.34733 3.746 0.000181 ***
Vehicle_ClassSPECIAL PURPOSE VEHICLE 4.40229 0.62403 7.055 1.89e-12 ***
Vehicle_ClassSTATION WAGON - MID-SIZE 0.40311 0.73060 0.552 0.581133
Vehicle_ClassSTATION WAGON - SMALL -0.05029 0.36747 -0.137 0.891158
Vehicle_ClassSUBCOMPACT 0.25911 0.26694 0.971 0.331759
Vehicle_ClassSUV - SMALL 1.20698 0.24402 4.946 7.73e-07 ***
Vehicle_ClassSUV - STANDARD 0.86486 0.29760 2.906 0.003670 **
Vehicle_ClassTWO-SEATER 0.53872 0.30756 1.752 0.079882 .
Vehicle_ClassVAN - CARGO -12.89604 1.39456 -9.247 < 2e-16 ***
Vehicle_ClassVAN - PASSENGER -9.46474 0.77557 -12.204 < 2e-16 ***
TransmissionA4 -7.11008 1.25096 -5.684 1.37e-08 ***
TransmissionA5 -3.58671 1.11009 -3.231 0.001239 **
TransmissionA6 -3.73105 0.96015 -3.886 0.000103 ***
TransmissionA7 -1.49071 1.18542 -1.258 0.208599
TransmissionA8 -1.49889 0.96051 -1.561 0.118683
TransmissionA9 -1.05623 0.99129 -1.066 0.286679
TransmissionAM5 -6.57604 2.74010 -2.400 0.016423 *
TransmissionAM6 -3.28294 1.05848 -3.102 0.001932 **
TransmissionAM7 -2.07518 0.98994 -2.096 0.036092 *
TransmissionAM8 -2.41801 1.15656 -2.091 0.036591 *
TransmissionAM9 2.00853 3.10299 0.647 0.517465
TransmissionAS10 -0.79986 1.01981 -0.784 0.432878
TransmissionAS4 -4.97383 3.74620 -1.328 0.184318
TransmissionAS5 -3.63436 1.37965 -2.634 0.008450 **
TransmissionAS6 -2.57368 0.96456 -2.668 0.007642 **
TransmissionAS7 -2.98707 0.98324 -3.038 0.002390 **
TransmissionAS8 -2.27775 0.95886 -2.375 0.017552 *
TransmissionAS9 -1.97487 1.10941 -1.780 0.075100 .
TransmissionAV -4.92078 1.00623 -4.890 1.03e-06 ***
TransmissionAV10 -3.90648 1.80797 -2.161 0.030751 *
TransmissionAV6 -5.15088 1.06572 -4.833 1.37e-06 ***
TransmissionAV7 -3.49470 1.06925 -3.268 0.001087 **
TransmissionAV8 -3.82753 1.25279 -3.055 0.002257 **
TransmissionM5 -3.50021 1.03733 -3.374 0.000744 ***
TransmissionM6 -3.02898 0.97192 -3.116 0.001837 **
TransmissionM7 -1.88369 1.12322 -1.677 0.093577 .
Fuel_TypeE -141.46294 0.59599 -237.359 < 2e-16 ***
Fuel_TypeN -110.46307 5.12412 -21.557 < 2e-16 ***
Fuel_TypeX -29.32059 0.41865 -70.037 < 2e-16 ***
Fuel_TypeZ -29.45606 0.43697 -67.410 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 5.099 on 7336 degrees of freedom
Multiple R-squared: 0.9925, Adjusted R-squared: 0.9924
F-statistic: 2.01e+04 on 48 and 7336 DF, p-value: < 2.2e-16
data <- read.csv("/Users/vinay/Desktop/LinearRegression/project/CO2_Emissions.csv")
data$Transmission <- as.factor(data$Transmission)
data$Fuel_Type <- as.factor(data$Fuel_Type)
# Fit a model with the interaction term
model_fuel_efficiency <- lm(Fuel_Consumption_Comb_L_100km ~ Transmission * Fuel_Type, data = data)
# View the summary of the model
summary(model_fuel_efficiency)
Call:
lm(formula = Fuel_Consumption_Comb_L_100km ~ Transmission * Fuel_Type,
data = data)
Residuals:
Min 1Q Median 3Q Max
-7.6157 -1.4253 -0.1821 1.0771 10.4030
Coefficients: (66 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 9.44000 0.93734 10.071 < 2e-16 ***
TransmissionA4 -1.04031 1.08991 -0.954 0.33987
TransmissionA5 -0.33182 1.28997 -0.257 0.79701
TransmissionA6 -0.05944 1.00032 -0.059 0.95261
TransmissionA7 -0.73370 0.53157 -1.380 0.16755
TransmissionA8 0.37786 1.01759 0.371 0.71041
TransmissionA9 -2.14000 1.22726 -1.744 0.08125 .
TransmissionAM5 -7.68182 1.13927 -6.743 1.67e-11 ***
TransmissionAM6 -2.77333 1.26916 -2.185 0.02891 *
TransmissionAM7 -2.33477 0.45881 -5.089 3.69e-07 ***
TransmissionAM8 -3.27698 0.52013 -6.300 3.14e-10 ***
TransmissionAM9 -3.13182 1.28997 -2.428 0.01521 *
TransmissionAS10 0.66000 1.09197 0.604 0.54559
TransmissionAS4 -3.02500 1.81515 -1.667 0.09565 .
TransmissionAS5 -5.03182 1.13927 -4.417 1.02e-05 ***
TransmissionAS6 -1.90667 1.53067 -1.246 0.21294
TransmissionAS7 0.12000 1.14800 0.105 0.91675
TransmissionAS8 -1.06182 0.97902 -1.085 0.27815
TransmissionAS9 -3.92427 0.53157 -7.382 1.73e-13 ***
TransmissionAV -4.33182 0.96533 -4.487 7.32e-06 ***
TransmissionAV10 -5.57468 0.90954 -6.129 9.29e-10 ***
TransmissionAV6 -6.10960 0.82933 -7.367 1.94e-13 ***
TransmissionAV7 -5.16848 0.58832 -8.785 < 2e-16 ***
TransmissionAV8 -4.55105 0.60716 -7.496 7.37e-14 ***
TransmissionM5 -3.09848 0.96533 -3.210 0.00133 **
TransmissionM6 -2.63091 1.13047 -2.327 0.01998 *
TransmissionM7 -2.94391 0.49795 -5.912 3.53e-09 ***
Fuel_TypeE 4.58348 1.70550 2.687 0.00722 **
Fuel_TypeN 5.16667 2.42020 2.135 0.03281 *
Fuel_TypeX 3.43500 1.40601 2.443 0.01459 *
Fuel_TypeZ 4.69182 1.03841 4.518 6.33e-06 ***
TransmissionA4:Fuel_TypeE 9.04807 1.86885 4.842 1.31e-06 ***
TransmissionA5:Fuel_TypeE 2.24833 2.04288 1.101 0.27112
TransmissionA6:Fuel_TypeE 3.75162 1.74849 2.146 0.03193 *
TransmissionA7:Fuel_TypeE NA NA NA NA
TransmissionA8:Fuel_TypeE 1.11661 1.78276 0.626 0.53112
TransmissionA9:Fuel_TypeE 1.16388 1.94100 0.600 0.54877
TransmissionAM5:Fuel_TypeE NA NA NA NA
TransmissionAM6:Fuel_TypeE -0.81682 2.25947 -0.362 0.71773
TransmissionAM7:Fuel_TypeE NA NA NA NA
TransmissionAM8:Fuel_TypeE NA NA NA NA
TransmissionAM9:Fuel_TypeE NA NA NA NA
TransmissionAS10:Fuel_TypeE 3.40540 1.86187 1.829 0.06744 .
TransmissionAS4:Fuel_TypeE NA NA NA NA
TransmissionAS5:Fuel_TypeE NA NA NA NA
TransmissionAS6:Fuel_TypeE 3.78446 2.10461 1.798 0.07219 .
TransmissionAS7:Fuel_TypeE -0.74348 2.10862 -0.353 0.72440
TransmissionAS8:Fuel_TypeE 4.71056 1.79796 2.620 0.00881 **
TransmissionAS9:Fuel_TypeE NA NA NA NA
TransmissionAV:Fuel_TypeE NA NA NA NA
TransmissionAV10:Fuel_TypeE NA NA NA NA
TransmissionAV6:Fuel_TypeE NA NA NA NA
TransmissionAV7:Fuel_TypeE NA NA NA NA
TransmissionAV8:Fuel_TypeE NA NA NA NA
TransmissionM5:Fuel_TypeE NA NA NA NA
TransmissionM6:Fuel_TypeE NA NA NA NA
TransmissionM7:Fuel_TypeE NA NA NA NA
TransmissionA4:Fuel_TypeN NA NA NA NA
TransmissionA5:Fuel_TypeN NA NA NA NA
TransmissionA6:Fuel_TypeN NA NA NA NA
TransmissionA7:Fuel_TypeN NA NA NA NA
TransmissionA8:Fuel_TypeN NA NA NA NA
TransmissionA9:Fuel_TypeN NA NA NA NA
TransmissionAM5:Fuel_TypeN NA NA NA NA
TransmissionAM6:Fuel_TypeN NA NA NA NA
TransmissionAM7:Fuel_TypeN NA NA NA NA
TransmissionAM8:Fuel_TypeN NA NA NA NA
TransmissionAM9:Fuel_TypeN NA NA NA NA
TransmissionAS10:Fuel_TypeN NA NA NA NA
TransmissionAS4:Fuel_TypeN NA NA NA NA
TransmissionAS5:Fuel_TypeN NA NA NA NA
TransmissionAS6:Fuel_TypeN NA NA NA NA
TransmissionAS7:Fuel_TypeN NA NA NA NA
TransmissionAS8:Fuel_TypeN NA NA NA NA
TransmissionAS9:Fuel_TypeN NA NA NA NA
TransmissionAV:Fuel_TypeN NA NA NA NA
TransmissionAV10:Fuel_TypeN NA NA NA NA
TransmissionAV6:Fuel_TypeN NA NA NA NA
TransmissionAV7:Fuel_TypeN NA NA NA NA
TransmissionAV8:Fuel_TypeN NA NA NA NA
TransmissionM5:Fuel_TypeN NA NA NA NA
TransmissionM6:Fuel_TypeN NA NA NA NA
TransmissionM7:Fuel_TypeN NA NA NA NA
TransmissionA4:Fuel_TypeX NA NA NA NA
TransmissionA5:Fuel_TypeX 0.40682 1.67931 0.242 0.80859
TransmissionA6:Fuel_TypeX -0.80221 1.45160 -0.553 0.58053
TransmissionA7:Fuel_TypeX NA NA NA NA
TransmissionA8:Fuel_TypeX -1.33534 1.46715 -0.910 0.36277
TransmissionA9:Fuel_TypeX -0.62300 1.62287 -0.384 0.70107
TransmissionAM5:Fuel_TypeX NA NA NA NA
TransmissionAM6:Fuel_TypeX -2.96614 1.66338 -1.783 0.07460 .
TransmissionAM7:Fuel_TypeX -1.96587 1.19222 -1.649 0.09921 .
TransmissionAM8:Fuel_TypeX NA NA NA NA
TransmissionAM9:Fuel_TypeX NA NA NA NA
TransmissionAS10:Fuel_TypeX -1.47840 1.52712 -0.968 0.33303
TransmissionAS4:Fuel_TypeX NA NA NA NA
TransmissionAS5:Fuel_TypeX 4.54318 1.61117 2.820 0.00482 **
TransmissionAS6:Fuel_TypeX -0.76378 1.85622 -0.411 0.68074
TransmissionAS7:Fuel_TypeX 0.37833 1.64591 0.230 0.81821
TransmissionAS8:Fuel_TypeX -1.89027 1.44209 -1.311 0.18997
TransmissionAS9:Fuel_TypeX 2.05760 1.25055 1.645 0.09994 .
TransmissionAV:Fuel_TypeX -1.13592 1.43014 -0.794 0.42707
TransmissionAV10:Fuel_TypeX -0.52532 1.73890 -0.302 0.76258
TransmissionAV6:Fuel_TypeX 1.49133 1.35214 1.103 0.27009
TransmissionAV7:Fuel_TypeX 0.30485 1.22241 0.249 0.80307
TransmissionAV8:Fuel_TypeX 0.59913 1.34344 0.446 0.65564
TransmissionM5:Fuel_TypeX -1.43171 1.43322 -0.999 0.31785
TransmissionM6:Fuel_TypeX -1.14456 1.54485 -0.741 0.45878
TransmissionM7:Fuel_TypeX NA NA NA NA
TransmissionA4:Fuel_TypeZ NA NA NA NA
TransmissionA5:Fuel_TypeZ NA NA NA NA
TransmissionA6:Fuel_TypeZ -2.79419 1.13145 -2.470 0.01355 *
TransmissionA7:Fuel_TypeZ NA NA NA NA
TransmissionA8:Fuel_TypeZ -1.64142 1.12180 -1.463 0.14345
TransmissionA9:Fuel_TypeZ -0.63538 1.31636 -0.483 0.62934
TransmissionAM5:Fuel_TypeZ NA NA NA NA
TransmissionAM6:Fuel_TypeZ -1.65636 1.37983 -1.200 0.23002
TransmissionAM7:Fuel_TypeZ NA NA NA NA
TransmissionAM8:Fuel_TypeZ NA NA NA NA
TransmissionAM9:Fuel_TypeZ NA NA NA NA
TransmissionAS10:Fuel_TypeZ -3.13182 1.24037 -2.525 0.01159 *
TransmissionAS4:Fuel_TypeZ NA NA NA NA
TransmissionAS5:Fuel_TypeZ NA NA NA NA
TransmissionAS6:Fuel_TypeZ -1.71955 1.60049 -1.074 0.28268
TransmissionAS7:Fuel_TypeZ -2.36975 1.23804 -1.914 0.05564 .
TransmissionAS8:Fuel_TypeZ -1.44474 1.07833 -1.340 0.18036
TransmissionAS9:Fuel_TypeZ NA NA NA NA
TransmissionAV:Fuel_TypeZ NA NA NA NA
TransmissionAV10:Fuel_TypeZ NA NA NA NA
TransmissionAV6:Fuel_TypeZ NA NA NA NA
TransmissionAV7:Fuel_TypeZ NA NA NA NA
TransmissionAV8:Fuel_TypeZ NA NA NA NA
TransmissionM5:Fuel_TypeZ NA NA NA NA
TransmissionM6:Fuel_TypeZ -0.68069 1.21947 -0.558 0.57673
TransmissionM7:Fuel_TypeZ NA NA NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.096 on 7316 degrees of freedom
Multiple R-squared: 0.4798, Adjusted R-squared: 0.4749
F-statistic: 99.22 on 68 and 7316 DF, p-value: < 2.2e-16
par(mfrow=c(2,2))
plot(model_fuel_efficiency)

LS0tCnRpdGxlOiAiQW5hbHl6aW5nIHRoZSBJbmZsdWVuY2Ugb2YgVmVoaWNsZSBBdHRyaWJ1dGVzIG9uIEZ1ZWwgQ29uc3VtcHRpb24gYW5kIEEgTGluZWFyIFJlZ3Jlc3Npb24gQXBwcm9hY2giCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoY2FyKQpgYGAKCmBgYHtyfQojIFJlYWQgdGhlIENTViBmaWxlCmRhdGEgPC0gcmVhZC5jc3YoIi9Vc2Vycy92aW5heS9EZXNrdG9wL0xpbmVhclJlZ3Jlc3Npb24vcHJvamVjdC9DTzJfRW1pc3Npb25zLmNzdiIpCgpzdHIoZGF0YSkKYGBgCgpgYGB7cn0Kc3VtbWFyeShkYXRhKSAgICAgICMgU3VtbWFyeSBzdGF0aXN0aWNzCmBgYAoKYGBge3J9CmhlYWQoZGF0YSkKYGBgCgpgYGB7cn0Kc3VtKGlzLm5hKGRhdGEpKQpgYGAKCmBgYHtyfQpkYXRhJE1ha2UgPC0gYXMuZmFjdG9yKGRhdGEkTWFrZSkKZGF0YSRNb2RlbCA8LSBhcy5mYWN0b3IoZGF0YSRNb2RlbCkKZGF0YSRWZWhpY2xlX0NsYXNzIDwtIGFzLmZhY3RvcihkYXRhJFZlaGljbGVfQ2xhc3MpCmRhdGEkVHJhbnNtaXNzaW9uIDwtIGFzLmZhY3RvcihkYXRhJFRyYW5zbWlzc2lvbikKZGF0YSRGdWVsX1R5cGUgPC0gYXMuZmFjdG9yKGRhdGEkRnVlbF9UeXBlKQpgYGAKCmBgYHtyfQpkYXRhIDwtIGRhdGEgJT4lIAogIG11dGF0ZShhY3Jvc3MoYyhNYWtlLCBNb2RlbCwgVmVoaWNsZV9DbGFzcywgVHJhbnNtaXNzaW9uLCBGdWVsX1R5cGUpLCBhcy5pbnRlZ2VyKSkKYGBgCgpgYGB7cn0Kc3RyKGRhdGEpCmBgYAoKYGBge3J9Cm1vZGVsIDwtIGxtKEZ1ZWxfQ29uc3VtcHRpb25fQ29tYl9MXzEwMGttIH4gRW5naW5lU2l6ZV9MLCBkYXRhID0gZGF0YSkKCnN1bW1hcnkobW9kZWwpCgpgYGAKCmBgYHtyfQojIFBsb3QgdGhlIGRhdGEgYW5kIHRoZSByZWdyZXNzaW9uIGxpbmUKZ2dwbG90KGRhdGEsIGFlcyh4ID0gRW5naW5lU2l6ZV9MLCB5ID0gRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20pKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBjb2wgPSAiYmx1ZSIpICsKICBsYWJzKHggPSAiRW5naW5lIFNpemUgKEwpIiwgeSA9ICJGdWVsIENvbnN1bXB0aW9uIChMLzEwMCBrbSkiLCAKICAgICAgIHRpdGxlID0gIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIEVuZ2luZSBTaXplIGFuZCBGdWVsIENvbnN1bXB0aW9uIikKYGBgCgpgYGB7cn0KcGFyKG1mcm93PWMoMiwyKSkKcGxvdChtb2RlbCkKYGBgCgpgYGB7cn0KcGxvdChkYXRhJEVuZ2luZVNpemVfTCwgZGF0YSRGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSwgCiAgICAgeGxhYiA9ICJFbmdpbmUgU2l6ZSAoTCkiLCB5bGFiID0gIkZ1ZWwgQ29uc3VtcHRpb24gKEwvMTAwIGttKSIsCiAgICAgbWFpbiA9ICJSZWxhdGlvbnNoaXAgYmV0d2VlbiBFbmdpbmUgU2l6ZSBhbmQgRnVlbCBDb25zdW1wdGlvbiIpCgpgYGAKCmBgYHtyfQpjeWxpbmRlcnNfbW9kZWwgPC0gbG0oQ08yX0VtaXNzaW9uc19nX3Blcl9rbSB+IEN5bGluZGVycywgZGF0YSA9IGRhdGEpCgpzdW1tYXJ5KGN5bGluZGVyc19tb2RlbCkKCmBgYAoKYGBge3J9CmdncGxvdChkYXRhLCBhZXMoeCA9IEN5bGluZGVycywgeSA9IENPMl9FbWlzc2lvbnNfZ19wZXJfa20pKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBjb2wgPSAiYmx1ZSIpICsKICBsYWJzKHggPSAiTnVtYmVyIG9mIEN5bGluZGVycyIsIHkgPSAiQ08yIEVtaXNzaW9ucyAoZy9rbSkiLCAKICAgICAgIHRpdGxlID0gIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIE51bWJlciBvZiBDeWxpbmRlcnMgYW5kIENPMiBFbWlzc2lvbnMiKQpgYGAKCmBgYHtyfQojIENyZWF0ZSBkdW1teSB2YXJpYWJsZXMgZm9yICdWZWhpY2xlX0NsYXNzJyB1c2luZyBtb2RlbC5tYXRyaXgKIyBUaGlzIGNyZWF0ZXMgYSBmdWxsIHNldCBvZiBkdW1teSB2YXJpYWJsZXMgKG9uZSBmb3IgZWFjaCBjbGFzcykKCgoKdmVoaWNsZV9jbGFzc19kdW1taWVzIDwtIG1vZGVsLm1hdHJpeCh+IFZlaGljbGVfQ2xhc3MgLSAxLCBkYXRhID0gZGF0YSkKCm1vZGVsX2RhdGEgPC0gZGF0YS5mcmFtZShGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSA9IGRhdGEkRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20sIHZlaGljbGVfY2xhc3NfZHVtbWllcykKCiMgRml0IHRoZSBsaW5lYXIgbW9kZWwKbW9kZWxfdmVoaWNsZV9jbGFzcyA8LSBsbShGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSB+IC4sIGRhdGEgPSBtb2RlbF9kYXRhKQoKc3VtbWFyeShtb2RlbF92ZWhpY2xlX2NsYXNzKQoKYGBgCgpgYGB7cn0KcGxvdChtb2RlbF92ZWhpY2xlX2NsYXNzKQpgYGAKCmBgYHtyfQoKdmVoaWNsZV9jbGFzc19kdW1taWVzIDwtIG1vZGVsLm1hdHJpeCh+IFZlaGljbGVfQ2xhc3MsIGRhdGEgPSBkYXRhKVssIC0xXQpmdWVsX3R5cGVfZHVtbWllcyA8LSBtb2RlbC5tYXRyaXgofiBGdWVsX1R5cGUsIGRhdGEgPSBkYXRhKVssIC0xXQp0cmFuc21pc3Npb25fZHVtbWllcyA8LSBtb2RlbC5tYXRyaXgofiBUcmFuc21pc3Npb24sIGRhdGEgPSBkYXRhKVssIC0xXQoKZGF0YSA8LSBjYmluZChkYXRhLCB2ZWhpY2xlX2NsYXNzX2R1bW1pZXMsIGZ1ZWxfdHlwZV9kdW1taWVzLCB0cmFuc21pc3Npb25fZHVtbWllcykKCmBgYAoKYGBge3J9CiMgRml0IHRoZSBtdWx0aXBsZSBsaW5lYXIgcmVncmVzc2lvbiBtb2RlbAptb2RlbCA8LSBsbShDTzJfRW1pc3Npb25zX2dfcGVyX2ttIH4gRW5naW5lU2l6ZV9MICsgQ3lsaW5kZXJzICsgLiwgZGF0YSA9IGRhdGEpCgojIFZpZXcgdGhlIHN1bW1hcnkgb2YgdGhlIG1vZGVsCnN1bW1hcnkobW9kZWwpCmBgYAoKYGBge3J9Cm1vZGVsIDwtIGxtKENPMl9FbWlzc2lvbnNfZ19wZXJfa20gfiBFbmdpbmVTaXplX0wgKyBDeWxpbmRlcnMgKyBGdWVsX0NvbnN1bXB0aW9uX0NpdHlfTF8xMDBrbSArIEZ1ZWxfQ29uc3VtcHRpb25fSHd5X0xfMTAwa20gKyBGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSwgZGF0YSA9IGRhdGEpCnN1bW1hcnkobW9kZWwpCmBgYAoKYGBge3J9CnZpZl9tb2RlbCA8LSB2aWYobW9kZWwpCnZpZl9tb2RlbAoKYGBgCgpgYGB7cn0KCmRhdGFfc3Vic2V0IDwtIGRhdGFbLCBjKCJFbmdpbmVTaXplX0wiLCAiQ3lsaW5kZXJzIiwgIkZ1ZWxfQ29uc3VtcHRpb25fQ2l0eV9MXzEwMGttIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICJGdWVsX0NvbnN1bXB0aW9uX0h3eV9MXzEwMGttIiwgIkZ1ZWxfQ29uc3VtcHRpb25fQ29tYl9MXzEwMGttIildCgpjb3IubWF0IDwtIHJvdW5kKGNvcihkYXRhX3N1YnNldCksIDIpCgpjb3IubWF0CgpgYGAKCmBgYHtyfQpwbG90KG1vZGVsKQpgYGAKCmBgYHtyfQpyZXZpc2VkX21vZGVsIDwtIGxtKENPMl9FbWlzc2lvbnNfZ19wZXJfa20gfiBFbmdpbmVTaXplX0wgKyBDeWxpbmRlcnMgKyBGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSwgZGF0YSA9IGRhdGEpCgpzdW1tYXJ5KHJldmlzZWRfbW9kZWwpCmBgYAoKYGBge3J9CiMgQ2hlY2sgVklGIGZvciB0aGUgcmV2aXNlZCBtb2RlbAp2aWZfcmV2aXNlZF9tb2RlbCA8LSB2aWYocmV2aXNlZF9tb2RlbCkKdmlmX3JldmlzZWRfbW9kZWwKYGBgCgpgYGB7cn0KIyBQbG90IGRpYWdub3N0aWNzCnBsb3QocmV2aXNlZF9tb2RlbCkKYGBgCgpgYGB7cn0KZGF0YSRsb2dfQ08yX0VtaXNzaW9uc19nX3Blcl9rbSA8LSBsb2coZGF0YSRDTzJfRW1pc3Npb25zX2dfcGVyX2ttKQoKbG9nX21vZGVsIDwtIGxtKGxvZ19DTzJfRW1pc3Npb25zX2dfcGVyX2ttIH4gRW5naW5lU2l6ZV9MICsgQ3lsaW5kZXJzICsgRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20sIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShsb2dfbW9kZWwpCmBgYAoKYGBge3J9CnBsb3QobG9nX21vZGVsKQpgYGAKCmBgYHtyfQpwb2x5X21vZGVsIDwtIGxtKENPMl9FbWlzc2lvbnNfZ19wZXJfa20gfiBwb2x5KEVuZ2luZVNpemVfTCwgMikgKyBDeWxpbmRlcnMgKyBGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSwgZGF0YSA9IGRhdGEpCgppbnRlcmFjdF9tb2RlbCA8LSBsbShDTzJfRW1pc3Npb25zX2dfcGVyX2ttIH4gRW5naW5lU2l6ZV9MICogQ3lsaW5kZXJzICsgRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20sIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShwb2x5X21vZGVsKQoKc3VtbWFyeShpbnRlcmFjdF9tb2RlbCkKYGBgCgpgYGB7cn0KcGxvdChwb2x5X21vZGVsKQpgYGAKCmBgYHtyfQpwbG90KGludGVyYWN0X21vZGVsKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KE1BU1MpCgojIEZpbmQgdGhlIG9wdGltYWwgQm94LUNveCB0cmFuc2Zvcm1hdGlvbiBmb3IgdGhlIHJlc3BvbnNlIHZhcmlhYmxlCmJjIDwtIGJveGNveChDTzJfRW1pc3Npb25zX2dfcGVyX2ttIH4gRW5naW5lU2l6ZV9MICsgQ3lsaW5kZXJzICsgRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20sIGRhdGEgPSBkYXRhKQoKIyBJZGVudGlmeSB0aGUgbGFtYmRhIHRoYXQgbWF4aW1pemVzIHRoZSBsb2ctbGlrZWxpaG9vZApsYW1iZGEgPC0gYmMkeFt3aGljaC5tYXgoYmMkeSldCgojIEFwcGx5IHRoZSBCb3gtQ294IHRyYW5zZm9ybWF0aW9uIHdpdGggdGhlIGlkZW50aWZpZWQgbGFtYmRhCmRhdGEkQkNfQ08yX0VtaXNzaW9ucyA8LSAoZGF0YSRDTzJfRW1pc3Npb25zX2dfcGVyX2ttXmxhbWJkYSAtIDEpIC8gbGFtYmRhCgojIEZpdCB0aGUgbW9kZWwgd2l0aCB0aGUgQm94LUNveCB0cmFuc2Zvcm1lZCByZXNwb25zZSB2YXJpYWJsZQpiY19tb2RlbCA8LSBsbShCQ19DTzJfRW1pc3Npb25zIH4gRW5naW5lU2l6ZV9MICsgQ3lsaW5kZXJzICsgRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20sIGRhdGEgPSBkYXRhKQoKIyBWaWV3IHRoZSBzdW1tYXJ5IG9mIHRoZSBtb2RlbApzdW1tYXJ5KGJjX21vZGVsKQpgYGAKCmBgYHtyfQpwbG90KGJjX21vZGVsKQpgYGAKCmBgYHtyfQpmdWxsX21vZGVsIDwtIGxtKENPMl9FbWlzc2lvbnNfZ19wZXJfa20gfiBFbmdpbmVTaXplX0wgKyBDeWxpbmRlcnMgKyBGdWVsX0NvbnN1bXB0aW9uX0NvbWJfTF8xMDBrbSwgZGF0YSA9IGRhdGEpCgpzdGVwd2lzZV9tb2RlbCA8LSBzdGVwKGZ1bGxfbW9kZWwsIGRpcmVjdGlvbj0iYm90aCIpCgpzdW1tYXJ5KHN0ZXB3aXNlX21vZGVsKQpgYGAKCmBgYHtyfQoKZGF0YSA8LSByZWFkLmNzdigiL1VzZXJzL3ZpbmF5L0Rlc2t0b3AvTGluZWFyUmVncmVzc2lvbi9wcm9qZWN0L0NPMl9FbWlzc2lvbnMuY3N2IikKCmRhdGEkVmVoaWNsZV9DbGFzcyA8LSBhcy5mYWN0b3IoZGF0YSRWZWhpY2xlX0NsYXNzKQpkYXRhJFRyYW5zbWlzc2lvbiA8LSBhcy5mYWN0b3IoZGF0YSRUcmFuc21pc3Npb24pCmRhdGEkRnVlbF9UeXBlIDwtIGFzLmZhY3RvcihkYXRhJEZ1ZWxfVHlwZSkKCmZ1bGxfbW9kZWxfY2F0IDwtIGxtKENPMl9FbWlzc2lvbnNfZ19wZXJfa20gfiBFbmdpbmVTaXplX0wgKyBDeWxpbmRlcnMgKyAKICAgICAgICAgICAgICAgICAgICAgRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20gKyBWZWhpY2xlX0NsYXNzICsgCiAgICAgICAgICAgICAgICAgICAgIFRyYW5zbWlzc2lvbiArIEZ1ZWxfVHlwZSwgZGF0YSA9IGRhdGEpCgpzdGVwd2lzZV9tb2RlbF9jYXQgPC0gc3RlcChmdWxsX21vZGVsX2NhdCwgZGlyZWN0aW9uPSJib3RoIikKCnN1bW1hcnkoc3RlcHdpc2VfbW9kZWxfY2F0KQpgYGAKCmBgYHtyfQpkYXRhIDwtIHJlYWQuY3N2KCIvVXNlcnMvdmluYXkvRGVza3RvcC9MaW5lYXJSZWdyZXNzaW9uL3Byb2plY3QvQ08yX0VtaXNzaW9ucy5jc3YiKQoKZGF0YSRUcmFuc21pc3Npb24gPC0gYXMuZmFjdG9yKGRhdGEkVHJhbnNtaXNzaW9uKQpkYXRhJEZ1ZWxfVHlwZSA8LSBhcy5mYWN0b3IoZGF0YSRGdWVsX1R5cGUpCgptb2RlbF9mdWVsX2VmZmljaWVuY3kgPC0gbG0oRnVlbF9Db25zdW1wdGlvbl9Db21iX0xfMTAwa20gfiBUcmFuc21pc3Npb24gKiBGdWVsX1R5cGUsIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShtb2RlbF9mdWVsX2VmZmljaWVuY3kpCmBgYAoKYGBge3J9CnBhcihtZnJvdz1jKDIsMikpCnBsb3QobW9kZWxfZnVlbF9lZmZpY2llbmN5KQpgYGAK